package com.cxy.common.request;

import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import com.cxy.common.R;
import com.fy.baselibrary.base.ViewHolder;
import com.fy.baselibrary.base.dialog.CommonDialog;
import com.fy.baselibrary.base.dialog.DialogConvertListener;
import com.fy.baselibrary.base.dialog.NiceDialog;
import com.fy.baselibrary.retrofit.observer.IProgressDialog;
import com.fy.baselibrary.utils.AnimUtils;
import com.fy.baselibrary.widget.refresh.EasyPullLayout;

/**
 * 根据请求框架实现 请求等待对话框
 * Created by fangs on 2018/9/11 09:25.
 */
public class NetDialog extends IProgressDialog {

    /**
     * 把 刷新控件 控件传递 网络请求的，观察者
     * @param obj   环境（AppCompatActivity or v4.app.Fragment）
     * @param epl   刷新控件
     * @return
     */
    public IProgressDialog init(Object obj, EasyPullLayout epl){
        this.obj = obj;
        this.epl = epl;
        return this;
    }

    /**
     * 初始化 网络请求等待对话框
     * @param obj      环境（AppCompatActivity or v4.app.Fragment）
     * @param strId    根据 String 资源id 设置 弹窗 文本【注意：资源内容 最后 要有 %s，比如：“请耐心等待 %s”】
     * @return 等待对话框
     */
    public IProgressDialog init(Object obj, @StringRes int strId) {
        this.obj = obj;

        if (obj instanceof AppCompatActivity) {
            mContext = (AppCompatActivity) obj;
        } else if (obj instanceof Fragment) {
            Fragment fragment = (Fragment) obj;
            mContext = fragment.getContext();
        }

        this.dialog = NiceDialog.init()
                .setLayoutId(R.layout.state_dialog_loading)
                .setDialogConvertListener(new DialogConvertListener() {
                    @Override
                    protected void convertView(ViewHolder holder, CommonDialog dialog) {
                        AnimUtils.setTxtEllipsisAnim(holder.getView(R.id.txtLoadHint), strId);
                    }
                })
                .setWidthPixels(130);
        return this;
    }
}
